package br.com.pizzaria.controller;

import java.util.List;

import org.hibernate.Session;
import org.hibernate.Transaction;

/**
 * @author Abimael
 *
 */

public class DaoHelper<ObjClasse> implements IMetodos {

	private Session sessao 	  = null;
	private Transaction trans = null;
	private ObjClasse objClasse;

	public DaoHelper(ObjClasse objClasse) {
		this.sessao = HibernateUtil.getSession();
		this.objClasse = objClasse;
	}

	@Override
	public boolean inserir() {
		boolean resultado = false;
		try{
			this.trans = sessao.beginTransaction();
			sessao.save(objClasse);
			trans.commit();
			resultado = true;
		}catch(Exception ex){
			trans.rollback();
			ex.printStackTrace();			
		}
		return resultado;
	}

	@Override
	public boolean alterar() {
		boolean resultado = false;
		try{
			this.trans = sessao.beginTransaction();
			sessao.update(objClasse);
			trans.commit();
			resultado = true;
		}catch(Exception ex){
			trans.rollback();
			ex.printStackTrace();			
		}
		return resultado;
	}
	
	@Override
	public boolean excluir() {
		boolean resultado = false;
		try{
			this.trans = sessao.beginTransaction();
			sessao.delete(objClasse);
			trans.commit();
			resultado = true;
		}catch(Exception ex){
			trans.rollback();
			ex.printStackTrace();			
		}
		return resultado;
	}

	@SuppressWarnings("rawtypes")
	@Override
	public List getListar() {
		List lista = sessao.createQuery("from "+objClasse.getClass().getName()).list();
		return lista;		
	}
}